package com.whale.kernel.service;

import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;

import com.whale.kernel.domain.HtmlMenu;
import com.whale.kernel.model.tree.HtmlMenuNode;

public interface HtmlMenuService {

	HtmlMenu findHtmlMenu(String path);

	List<HtmlMenu> getTopLevelHtmlMenus(String menuGroupId);

	List<HtmlMenu> getAllTopLevelHtmlMenus();

	List<HtmlMenu> getSubHtmlMenus(String topLevelMenuPath);

	void reInitilizeHtmlMenu(ServletContext ctx);

	/**
	 * Получить рекурсивно родительские меню для указанного ID меню
	 */
	List<HtmlMenu> getParentMenus(Long menuId);

	/**
	 * Получить дочерние узлы дерева для указанного узла включая сам узел. При
	 * этом количество уровней вложенности веток ограничивается указанным
	 * параметром maxLevel
	 */
	Map<Long, HtmlMenuNode> getChildMenus(Long menuId, int maxLevel);

	/**
	 * Получить часть веток дерева необходимую для просмотра для указанного
	 * элемента дерева. При этом количество уровней вложенности веток
	 * ограничивается указанным параметром maxLevel
	 */
	Map<Long, HtmlMenuNode> getTreeScopeMenus(Long menuId, int maxLevel);

	/**
	 * Получить часть веток дерева для узлов верхнего уровня. При этом
	 * количество уровней под веток ограничивается указанным параметром maxLevel
	 */
	Map<Long, HtmlMenuNode> getTreeRootMenus(String menuGroupId, int maxLevel);
}
